Customization of Display Templates

ABSTRACT

A server system enables users to configure user interfaces. A generic presentation string is stored at a data storage system. The generic presentation string is renderable to present an unfilled template that may include one or more slots. A template module is generated from the generic presentation string. The generic presentation string specifies a transformation operation. A template execution operation generates presentation strings renderable to present filled templates. In the filled templates, data based on objects belonging to a given type replace the slots of the unfilled template.

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims priority to U.S. Provisional Patent ApplicationSer. No. 61/405,067, filed Oct. 20, 2010, the entire content of which ishereby incorporated by reference, and is related to U.S. patentapplication Ser. No. ______, Attorney Docket No.14917.1812USU1/331879.01, titled “Result Types for Conditional DataDisplay,” filed on Jun. 30, 2011, and U.S. patent application Ser. No.______, Attorney Docket No. 14917.1851USU1/331457.02, titled “Templatesfor Displaying Data,” filed on Jun. 30, 2011, the entirety of each ofwhich is incorporated by reference herein.

BACKGROUND

As computer networks and computers have increased in speed andcomplexity, web designers have been able to create increasingly complexwebsites. Such complex websites can provide greater utility to users andcan be more visually compelling. However, complex websites can be moredifficult and expensive to design.

Moreover, it can be difficult and expensive to make changes to suchcomplex websites after they are designed. For example, a website mayutilize data from a given database. In this example, multiple parts ofthe website may need to be redesigned if a schema of the database ischanged to include additional properties. In another example, a designermay want to change an appearance of a feature that appears in multiplewebpages in a website. In this example, the designer may need to changeseparate pieces of code associated with each of the webpages.

SUMMARY

A server system enables users to configure user interfaces. A genericpresentation string is stored at a data storage system. The genericpresentation string is renderable to present an unfilled template thatincludes one or more slots. A template module is generated from thegeneric presentation string. The generic presentation string specifies atransformation operation. A template execution operation generatespresentation strings renderable to present filled templates. In thefilled templates, data based on content resource objects belonging to agiven content resource type replace the slots of the unfilled template.

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating an example system.

FIG. 2 is a block diagram illustrating example details of a serversystem.

FIG. 3 is a block diagram illustrating example details of a clientdevice.

FIG. 4 is illustrates a flowchart for an example operation of the clientapplication and a flowchart for an operation performed when a contentgeneration script is performed.

FIG. 5 illustrates a flowchart for an example template executionoperation and a flowchart for an example operation to generate apresentation string for a child context object.

FIG. 6 is a screen illustration of an example search results interface.

FIG. 7 is a block diagram illustrating an alternate example system.

FIG. 8 is a block diagram illustrating example components of thealternate embodiment of the server system.

FIG. 9 is a block diagram illustrating an example unfilled template.

FIG. 10 is a flowchart illustrating an example operation of the serversystem.

FIG. 11 is a flowchart illustrating an example transformation operationto generate a template module from a generic presentation string.

FIG. 12 is a flowchart illustrating an example operation of an editorapplication.

FIG. 13 is a screen illustration showing a browser window containing anexample search interface presented by the client device.

FIG. 14 is a block diagram illustrating example components of anotheralternate embodiment of the server system.

FIG. 15 illustrates example content of a content index and examplecontents of an admin database.

FIG. 16 illustrates an example scope hierarchy.

FIG. 17 is a flowchart illustrating an example operation to configure aresult type.

FIG. 18 is a screen illustration of a browser window containing anexample type configuration interface.

FIG. 19 is a flowchart illustrating an example operation to search forresources in a target website.

FIG. 20 is a block diagram illustrating example components of acomputing device.

DETAILED DESCRIPTION

The following detailed description and the attached figures illustrateexample embodiments. The reader will understand that other embodimentsexist and are within the scope of the attached claims. In the attachedfigures, stacked blocks represent one or more similar, but notnecessarily identical, items. In addition, ellipses between itemsrepresent one or more similar, by not necessarily identical, items.Items having the same reference numbers with different alphabeticalsuffixes (e.g., “A” through “N”) are not intended to indicate theexistence of a specific number of items.

FIG. 1 is a block diagram illustrating an example system 100. Asillustrated in the example of FIG. 1, the system 100 comprises a serversystem 102, a client device 104, and a network 106. In otherembodiments, the system 100 can include more or fewer components. Forexample, some embodiments of the system 100 include client devices inaddition to the client device 104.

The server system 102 and the client device 104 each comprise one ormore computing devices. A computing device is a physical device forprocessing information. In various embodiments, the server system 102and the client device 104 comprise various types of computing devices.For example, the server system 102 and/or the client device 104 cancomprise one or more personal computers, standalone server devices,laptop computers, blade server devices, smart phones, tablet computers,network-enabled televisions or television set top boxes, game consoles,telephones, in-car computers, appliances, intermediate network devices,and/or other types of computing devices.

The network 106 facilitates communication between the client device 104and the server system 102. In the example of FIG. 1, the network 106 isrepresented as a cloud. However, the network 106 can comprise variousnumbers of computing devices and links between the computing devices. Invarious embodiments, the network 106 can be structured in various ways.For example, the network 106 can be the Internet, an intranet, a localarea network, a metropolitan area network, a wide area network, oranother type of network. In some instances, some links within thenetwork 106 are wireless and other links within the network 106 arewired.

A user 108 uses the client device 104. The user 108 can be various typesof people. For example, the user 108 can be an employee of a company ora partner of that company. In another example, the user 108 can be amember of the general public.

The client device 104 provides a client application 110. In variousembodiments, the client application 110 comprises various types ofapplications. For example, the client application 110 can be a webbrowser application, such as INTERNET EXPLORER® from Microsoft Corp.,FIREFOX® from the Mozilla Foundation, or CHROME® from Google, Inc. Inanother example, the client application 110 can be a productivityapplication, such as a word processor application, a spreadsheetapplication, a slide presentation application, and so on.

The server system 102 hosts at least one website 112. In other words,the server system 102 provides functionality that enables clients toaccess resources in the website 112. The website 112 comprises aplurality of resources that can be accessed through a network, such asthe network 106. For example, the website 112 can comprise webpages,word processor documents, PDF documents, spreadsheet documents,presentation documents, data sources, and other types of resources.

In various embodiments, the website 112 can be various types of website.For example, the website 112 can be a public Internet website for acompany. In another example, the website 112 can be a private internalintranet website for a company. In yet another example, the website 112can be a private collaboration website accessible by employees ofmultiple companies.

The client application 110 sends resource requests to the server system102. The resources requests comprise requests to access resources in thewebsite 112. In response to the resource requests, the server system 102sends resource data to the client device 104. The client application 110processes the resource data to present the resources to the user 108.

As described in detail elsewhere in this document, when the clientapplication 110 sends a request for some resources in the website 112,the client application 110 receives a dataset and a set of templatemodules. The dataset comprises a set of objects. Each of the objectsbelongs to a content resource object type. For example, the dataset caninclude an object that belongs to a “phone number” content resourceobject type and an object that belongs to a “street address” contentresource object type. Multiple elements in the dataset can have the sameelement type.

The template modules correspond to different content resource objecttypes. For example, the dataset can include a content resource objectthat belongs to a “phone number” content resource object type and acontent resource object that belongs to a “street address” contentresource object type. In this example, the set of template modulesincludes a template module that corresponds to the “phone number”content resource object type and a template module that corresponds tothe “street address” content resource object type.

The template modules specify conversion operations. A template module'stemplate execution conversion operation, herein referred to as atemplate execution operation, transforms a conversion script which maybe a collection of template modules into a presentation string whengiven an object belonging to the content resource object typecorresponding to the template module. The presentation string is acharacter string that the client application 110 can render to createone or more onscreen features.

In various embodiments, presentation strings can conform to variouspresentation languages. For example, in some embodiments, thepresentation strings conform to the Hypertext Markup Language (HTML). Inother example, the presentation strings conform to a non-standardizedlanguage.

The client application 110 performs the template execution operationsspecified by the corresponding template modules on the content resourceobjects in the dataset. For example, the dataset can include an objectthat belongs to a “phone number” content resource object type. In thisexample, a given template module corresponds to the “phone number”content resource object type. In this example, the client application110 generates a presentation string for the object by performing thetemplate execution operation specified by the given template module. Inthis way, the client application 110 generates presentation stringsneeded to render a resource.

FIG. 2 is a block diagram illustrating example components of the serversystem 102. As illustrated in the example of FIG. 2, the server system102 comprises a data storage system 200. The data storage system 200comprises one or more computer storage media. The term “computer storagemedia” encompasses devices or articles of manufacture that storecomputer-readable data or instructions. In some embodiments, thecomputer storage media in the data storage system 200 are geographicallydispersed. In other embodiments, the computer storage media in the datastorage system 200 are located within a single device or data center.

The data storage system 200 stores data for subsequent retrieval. Thedata storage system 200 stores content resources 202, metadata 204, aschema 208, and template modules 206A-206N (collectively, “templatemodules 206”). The content resources 202 can include some or all of theresources of the website 112. For example, the content resources 202 caninclude web page documents, word processor documents, PDF documents,digital images, video, spreadsheet documents, and so on.

The metadata 204 comprises data regarding the content resources 202. Forexample, the content resources 202 can include a word processordocument. In this example, the metadata 204 can include data indicatingan author, a creation time, a modified time, a title, and a summary ofthe word processor document.

Each of the template modules 206 comprises a set of softwareinstructions that specifies a template execution operation. The templateexecution operations take objects in datasets and generate correspondingpresentation strings. In various embodiments, the software instructionscan conform to various programming languages. For example, the softwareinstructions in one or more of the template modules 206 can conform tothe JavaScript programming language. In other words, one or more of thetemplate modules 206 can specify the template execution operations assets of JavaScript instructions. In another example, the softwareinstructions in the template modules 206 can conform to the Perlprogramming language.

Some embodiments store the template modules 206 in template modulefiles. In some such embodiments, the template module files have filename extensions that correspond to the programming language used in thetemplate modules 206. For example, if one of the template modules 206contains software instructions conforming to the JavaScript programminglanguage, the template module file containing the template module canhave the file name extension “.js”.

The schema 208 specifies allowable content resource types in datasetssent by the server system 102 to the client device 104. In variousembodiments, the schema 208 specifies that various content resourcetypes are allowable in the datasets. For example, the schema 208 canspecify that datasets must include a collection of content resourceobjects belonging to a certain content resource type. In this example,the schema 208 can specify that the collection of content resourceobjects includes one or more objects belonging to a “person” contentresource type. In this example, the schema 208 can further specify thatcontent resource objects belonging to the “person” content resource typeinclude a “name” content resource object or data element, which is of astring content resource object type or data element type, a “phonenumber” content resource object or data element belonging to a “phonenumber” content resource object type or data element type, and a “streetaddress” content resource object or data element belonging to a“location address” content resource object type or data element type.The term “content resource object” will herein be used to describe adata element (e.g., name, phone number, street address, etc.) of aspecified content resource type (e.g., “person” content resource type)in a dataset. The term “content resource object type” will herein beused to describe a type of a content resource object (e.g., a string, aphone number, a location address, etc.).

Furthermore, the schema 208 maps content resource object types to thetemplate modules 206. Continuing the example of the previous paragraph,the schema 208 can map the top-level collection in the dataset to thetemplate module 206A, map the “person” content resource type to thetemplate module 206B, map the “location address” content resource objecttype to the template module 206N, and so on.

In various embodiments, the schema 208 is formatted in various ways. Forexample, in some embodiments, the datasets sent by the server system 102are formatted as XML. In this example, the schema 208 can be formattedin Document Type Definition (DTD) language, the XML Schema language, theRELAX NG language, or another schema language for XML. In otherembodiments, the datasets are not formatted as XML and the schema 208 isformatted using other schema definition languages.

In addition to the data storage system 200, the server system 102provides a web server 210. Some embodiments of the server system 102provide the web server 210 by executing instructions stored on one ormore computer storage media. The web server 210 is configured to provideresources hosted by the server system 102 to the client application 110in response to resource requests. For example, the web server 210 canprovide the content resources 202, data sets, the template modules 206,the schema 208, and other resources in response to resource requests.

FIG. 3 is a block diagram illustrating example details of the clientdevice 104. As illustrated in the example of FIG. 3, the client device104 comprises a cache 300 and the client application 110.

When the client application 110 receives content resources 202, thetemplate modules 206, or the schema 208, the client application 110stores copies of the content resources 202, the template modules 206,and the schema 208 in the cache 300. Various embodiments implement thecache 300 in various ways. For example, some embodiments implement thecache 300 as a folder or directory in a file system. Other exampleembodiments implement the cache 300 as a relational database.

FIG. 4 is illustrates a flowchart for an example operation 400 of theclient application 110 and a flowchart for an operation 450 performedwhen a content generation script is performed. Various embodiments ofthe client application 110 can perform the operation 400 in response tovarious events. For example, the client application 110 can perform theoperation 400 when the user 108 enters a URL in an address bar of theclient application 110. In another example, the client application 110can perform the operation 400 when the user 108 selects a link inanother webpage.

After the operation 400 starts, the client application 110 sends aresource request to the web server 210 (402). The resource requestrequests a user interface, such as a webpage in the website 112. Invarious embodiments, the resource request conforms to various protocols.For example, in some embodiments, the resource request conforms to theHypertext Transfer Protocol (HTTP). In other example embodiments, theresource request conforms to another protocol, such as SOAP.

The client application 110 receives base resource data from the webserver 210 in response to the resource request (404). The base resourcedata includes a content generation script. When the client application110 performs the content generation script, the content generationscript inserts content into the user interface.

In various embodiments, the base resource data comprises various data inaddition to the content generation script. For example, the baseresource data can comprise HTML data, additional scripts, and so on.

After the client application 110 receives the base resource data, theclient application 110 performs the content generation script in thebase resource data (406). Performance of the content generation scriptcauses the client application 110 to generate a presentation string.After the client application 110 generates the presentation string, theclient application 110 renders the presentation string (408). Renderingthe presentation string comprises rendering presentation strings withinthe presentation string. When the client application 110 renderspresentation strings, the client application presents sets of on-screenfeatures to the user 108.

In some embodiments, performance of the content generation script causesthe client application 110 to perform the operation 450. After theoperation 450 starts, the client application 110 sends a dataset request(452). The dataset request comprises a request for a dataset. Inresponse, the web server 210 generates the dataset and sends the datasetto the client application 110. Subsequently, the client application 110receives the dataset (454). In other words, the client application 110downloads the dataset.

In various embodiments, the web server 210 generates the dataset invarious ways. For example, the web server 210 can use the contentresources 202 and/or the metadata 204 to generate the dataset. In thisexample, the content resources 202 can include entries in a company'semployee directory. In this example, the resource request can comprise asearch query for employees having the last name “Jones.” In thisexample, the web server 210 obtains a list of search results. The searchresults are ones of the content resources 202 that satisfy the searchquery. In this example, the web server 210 generates a dataset thatcontains data regarding the search results. For instance, in thisexample, the web server 210 can generate the following dataset:

Search_Results { Person { Name::Steven Jones;Email_addr::sjones@contoso.com; } Person { Name::Jane Jones;Email_addr::jjones@contoso.com } }

As mentioned above, the dataset comprises one or more collections ofcontent resource types containing content resource objects. In someinstances, other collections of content resource types are nested in thecontent resource objects of the content resource types in the top leveldataset. In other words, the content resource objects in the collectionsof the top level dataset can contain child objects of simple or complexcontent resource object types. In the example dataset shown above, the“Search_Results” object is a data collection in the top level dataset.The two “Person” content resource types are contained in the“Search_Results” collection. The “Name” content resource object and the“Email_addr” content resource object are content resource objects of the“Person” content resource type.

In other embodiments, the client application 110 does not generate thedataset request. In such embodiments, the base resource data can includethe dataset.

In addition, the client application 110 generates a schema request(456). The schema request comprises a request for the schema 208. Inother embodiments, the client application 110 does not generate schemarequests. In such embodiments, the base resource data includes theschema 208.

When the client application 110 generates the schema request, the clientdevice 104 determines whether the cache 300 includes a copy of theschema 208. If the cache 300 does not include a copy of the schema 208,the client device 104 forwards the schema request to the web server 210.The web server 210 returns the schema 208 to the client device 104 inresponse to the schema request. In other words, the client device 104downloads the schema 208. The client device 104 then provides the schema208 to the client application 110. On the other hand, if the cache 300stores a copy of the schema 208, the client device 104 provides the copyof the schema 208 to the client application 110. In either case, theclient application 110 receives the schema 208 (458).

After the client application 110 receives the dataset and the schema208, the client application 110 uses the schema 208 to identify atemplate module that corresponds to the type and a level of the contentresource types and content resource objects of the dataset (460). Asmentioned above, the schema 208 maps resource, level and contentresource object types to the template modules 206. The clientapplication 110 uses the schema 208 to identify the template module thatcorresponds to the type and level of the content resource types andcontent resource objects by determining, due to the schema 208 mapping agiven template module to a content resource type or level or contentresource object type, that the given template module corresponds to acurrent template execution operation on the dataset. For ease ofexplanation, this document can refer to a current content resourceobject or data element at a current level as a current context object,and the template module that corresponds to the current context objectas that object's template module.

After identifying the current context object's template module, theclient application 110 generates a template request (462). The templaterequest comprises a request for the current context object's templatemodule. When the client application 110 generates the template request,the client device 104 determines whether the cache 300 stores thecurrent context object's template module. If the cache 300 does notstore the current context object's template module, the client device104 does not forward the template request to the web server 210. Rather,the client device 104 provides the cached copy of the current contextobject's template module to the client application 110 in response tothe template request. Otherwise, if the cache 300 does not store thecurrent context object's template module, the client device 104 sendsthe template request to the web server 210. Subsequently, the clientdevice 104 receives the current context object's template module fromthe web server 210. In other words, the client device 104 downloads thecurrent context object's template module. In either case, the clientapplication 110 receives the current context object's template module inresponse to the template request (464).

After the client application 110 receives the current context object'stemplate module, the client application 110 generates a presentationstring for the current context object (466). The client application 110generates the presentation string for the current context object byperforming the template execution operation of the current contextobject's template module on the current context object. As mentionedabove, the presentation string can comprise HTML data. In someinstances, the presentation string can also comprise one or morescripts.

The client application 110 can perform the operation 400. Between timesthat the client application 110 performs the operation 400, the schema208 can change. For example, an administrator can change the schema 208to change the allowable content resource object types in datasetsgenerated by the server system 102. Consequently, in this example, whenthe client application 110 performs the operation 400 again, the clientapplication 110 can download a dataset that includes one or more objectsbelonging to content resource object types that were not previouslyallowable. Because the template modules 206 are separate from theschema, a developer may only need to update the template modulescorresponding to the changed object types and not other ones of thetemplate modules 206.

In another example, an administrator can change the schema 208 to changethe mappings between object types and template modules. Consequently, inthis example, when the client application 110 performs the operation 400again, the client application 110 can download a second dataset thatincludes content resource objects or data elements belonging to a giventype. Whereas when the client application 110 previously performed atemplate execution operation of a given template module on objects ofthe given type at a given level, the client application 110 nowgenerates presentation strings for objects of the given type byperforming a template execution operation of a different template moduleon the objects of the given content resource object type. The clientapplication 110 can then render these presentation strings. In someinstances, it may not be necessary for a programmer to rewrite the codeof any of the template modules 206 in response to such a change to theschema 208.

FIG. 5 illustrates a flowchart for an example template executionoperation 500 and a flowchart for an example operation 550 to generate apresentation string for a child object. For ease of explanation, thisdocument explains the template execution operation 500 and the operation550 with reference to the template module 206A. In some embodiments, thetemplate execution operations of each of the template modules 206 aresimilar to the template execution operation 500.

The template execution operation 500 starts when the client application110 or the template execution operation of another template moduleinvokes the template execution operation 500 of the template module206A. For example, if the template module 206A corresponds to a rootlevel presentation of relevant types of content resources in thedataset, the client application 110 invokes the template executionoperation 500. However, if the template module 206A corresponds to someother level or object type in the dataset, the template executionoperation of another template module invokes the template executionoperation 500.

When the template execution operation 500 is invoked, the templatemodule 206A receives a current context object in the dataset (502). Invarious embodiments, the template module 206A receives the currentcontext object in various ways. For example, some embodiments of thetemplate execution operation 500 receive the current context object as aparameter.

After receiving the current context object, the template module 206Agenerates the current context object's presentation string (504). Ininstances where the current object has one or more child objects, thecurrent object's presentation string can include the child object'spresentation strings.

When the template module 206A generates the current context object'spresentation string, the template module 206A can include one or morepre-determined strings into the current cxt object's presentationstring. For example, the template module 206A can include a string thatcomprises a series of tags into the current context object'spresentation string. This series of tags can define a layout orformatting.

Furthermore, as part of generating the current context object'spresentation string, the template module 206A can perform the operation550 one or more times to generate the child objects' presentationstrings. After the operation 550 starts, the template module 206A usesthe schema 208 to identify a template module that corresponds to a givenchild object of the current context object (552). For instance, thetemplate module 206A can determine, based on the schema 208 mapping acontent resource object type of the given child object to the templatemodule, that the template module corresponds to the given object. Forease of explanation, this document can refer to the template modulecorresponding to the given child object as the given child object'stemplate module.

After identifying the given child object's template module, the templatemodule 206A requests the given child object's template module (554). Ifthe cache 300 stores a given child object's template module, thetemplate module 206A retrieves the given child object's template modulefrom the cache 300 without sending a request for the given childobject's template module to the web server 210. On the other hand, ifthe cache 300 does not store the given child object's template module,the template execution operation 500 sends a request to the web server210 for the given child object's template module. In either case, theclient application 110 subsequently receives the given child object'stemplate module (556). In other words, the client application 110downloads the given child object's template module.

After receiving the given child object's template module, the templatemodule 206A generates a presentation string for the given child object(558). The template module 206A generates the presentation string forthe given child object by invoking the template execution operation ofthe given child object's template module on the given child object.

For example, the following string can represent the current contextobject:

Person { Name::Steven Jones; Email_addr::sjones@contoso.com }In this example, the current context object is of a “person” contentresource type, a first child object is of the “Name” content resourceobject type, and a second child object is of the “Email_addr” contentresource object type. In this example, the template module 206Agenerates a presentation string for the first child object by performingthe template execution operation of the template module corresponding tothe “Name” content resource object type. For example, the templatemodule 206A can generate the following presentation string for the firstchild object:

Name: <b> STEVEN JONES </b>

In this example, the template module 206A generates a presentationstring for the second child object by performing the template executionoperation of the template module corresponding to the “Email_addr”content resource type. For example, the template module 206A cangenerate the following presentation string for the second child object:

<i> Email address: </i> <a href=“mailto:sjones@contoso.com”>sjones@contoso.com </a>

Continuing the example from the previous paragraph, the template module206A can generate the following presentation string for the currentcontext object:

<table> <tr> <td> Name: <b> STEVEN JONES </b> </td> <td> <i> Emailaddress: </i> <a href=”mailto:sjones@contoso.com”>sjones@contoso.com</a></td> </tr> </table>The reader will notice that the current cxt object's presentation stringincludes the child objects' presentation strings as shown above. In someembodiments, the template module 206A can modify one or more of thechild objects' presentation strings.

After generating the presentation string for the current context object,the template module 206A returns the current context object'spresentation string to an operation that invoked the template executionoperation 500 (506). For example, if the client application 110 invokedthe template execution operation 500, the template module 206A returnsthe current context object's presentation string to the clientapplication 110. If another template module's template executionoperation invoked the template execution operation 500, the templateexecution operation 500 returns the current context object'spresentation string to the other template module's template executionoperation.

FIG. 6 is a screen illustration of an example search results interface600. The client application 110 can present the search results interface600 to the user 108 when the user 108 inputs a search string into a userinterface presented by the client application 110. In the example ofFIG. 6, the search results interface 600 includes a search string field602, a filled template 604, and a filled template 606. The filledtemplate 604 is a set of on-screen features describing a resource thatsatisfies the search string. The filled template 606 is another set ofon-screen features describing another resource that satisfies the searchstring. The filled template 604 includes fields 608A through 608C(collectively, “fields 608”). The filled template 606 includes fields610A through 610E (collectively, “fields 610”).

In the example of FIG. 6, the client application 110 can receive thefollowing dataset after sending the search string to the server system102:

Search_Results { Search_string::Contoso; Word_processor_search_result {type_image::imgs/w.jpg; title::Memorandum on Contoso Co. Account;snippet::The Contoso account is very important to Northwind Traders.During the last quarter, Northwind received $10k in orders from Contoso.In order to...; } Presentation_search_result { type_image::imgs/p.jpg;title::Contoso Sales Presentation; summary::Presentation given to JackieFellows, Contoso COO, regarding our new line of doors and windows.created::03/16/2011; modified::04/24/2011; author::Bill Smith;author_img::imgs/billsmith.jpg; } }Readers will understand that this dataset is for purposes of explanationonly. In other embodiments, datasets have other formats and content.

After the client application 110 receives this dataset, the clientapplication 110 generates the presentation string representing thesearch results interface 600. The client application 110 generates thepresentation string representing the search results interface 600 byperforming a template execution operation of a template module thatcorresponds to the “Search_Results” content resource type.

To generate the presentation string representing the search resultsinterface 600, the client application 110 generates a presentationstring representing the search string field 602 by performing a templateexecution operation of a template module that corresponds to the“Search_string” content resource type. In addition, the clientapplication 110 generates a presentation string representing the filledtemplate 604 by performing a template execution operation of a templatemodule that corresponds to the “Word_processor_search_result” contentresource type. In this way, the filled template 604 is based on thetemplate module that corresponds to the “Word_processor_search_result”content resource type. As part of generating the presentation stringrepresenting the filled template 604, the client application 110generates presentation strings representing the fields 608 by performingtemplate execution operations of template modules that correspond to the“type_image,” the “title,” and the “snippet” content resource types.

The client application 110 generates a presentation string representingthe filled template 606 by performing a template execution operation ofa template module that corresponds to the “Presentation_search_result”content resource type. In this way, the filled template 606 is based onthe template module that corresponds to the “Presentation_search_result”content resource type. As part of generating the presentation stringrepresenting the filled template 606, the client application 110generates presentation strings representing the fields 610 by performingtemplate execution operations of the template modules that correspond tothe “type_image,” “title,” “summary,” “created,” “modified,” “author,”and “author_img” content resource types.

FIG. 7 is a block diagram illustrating an alternate example system 700.As illustrated in the example of FIG. 7, the system 700 comprises theserver system 102, the client device 104, the network 106, and the user108. As in the system 100, the server system 102 hosts the website 112and the client device 104 provides the client application 110. However,the system 700 also includes an admin device 702 and an admin 704. Inother embodiments, the system 700 can include more or fewer components.For example, some embodiments of the system 700 include client devicesin addition to the client device 104.

The admin device 702 comprises one or more computing devices. In variousembodiments, the admin device 702 can comprise various types ofcomputing devices. For example, the admin device 702 can comprise one ormore personal computers, standalone server devices, laptop computers,blade server devices, smart phones, tablet computers, network-enabledtelevisions or television set top boxes, game consoles, telephones,in-car computers, appliances, intermediate network devices, and/or othertypes of computing devices. The admin device 702 is able to communicatewith the server system 102 using the network 106 or another network.

The admin 704 uses the admin device 702. The admin 704 is a personresponsible for performing administrative tasks on the website 112. Forexample, the admin 704 can be responsible for creating, configuring, anddeleting resources in the website 112. The admin 704 can be varioustypes of people. For example, the admin 704 can be an employee orcontractor of a company associated with the website 112 or an employeeof another company.

Among other the administrative tasks that the admin 704 performs on thewebsite 112, the admin 704 manages the template modules 206 of thewebsite 112. For example, the admin 704 can develop or modify thetemplate modules 206 of the website 112. As described in detailelsewhere in this document, the admin 704 can edit the template modules206 by modifying generic presentation strings for the template modules206.

The generic presentation string of a given template module is apresentation string is renderable to present an unfilled template. Invarious embodiments, the presentation string conforms to variouspresentation languages. For example, the generic presentation string canconform to HTML.

The unfilled template includes one or more slots. The slots indicatelocations into which data based on content resource objects in a datasetcan be filled. Presentation strings generated by performing the templateexecution operation of the given template module on content resourceobjects belonging to a given content resource type are renderable by theclient application 110 to present filled versions of the given template.The filled templates are on-screen features displayed to the user 108.In the filled templates, data based on the objects belonging to thegiven content resource object type replace the slots in the unfilledtemplate. In other words, the slots in the unfilled template arereplaced by data based on the objects. A filled template is based on atemplate module where the filled template rendering is a presentationstring generated by the template execution operation of the templatemodule.

Furthermore, in some embodiments, the admin device 702 provides aneditor application 706. The editor application 706 enables users to editthe generic presentation strings for the template modules 206 by editingthe generic on-screen features of the template modules 206. Because theeditor application 706 enables users to edit the generic on-screenfeatures instead of the underlying presentation strings or the templatemodules 206, the editor application 706 may be characterized as aWhat-You-See-Is-What-You-Get (WYSIWYG) editor application. ExampleWYSIWYG editor applications include VISUAL STUDIO® from Microsoft Corp.,EXPRESSION® from Microsoft Corp., DREAMWEAVER® from Adobe Systems, andso on. As described elsewhere in this document, the admin 704 can usethe editor application 706 to edit the template modules 206.

FIG. 8 is a block diagram illustrating example components of analternate embodiment of the server system 102. As illustrated in theexample of FIG. 8, the server system 102 comprises the data storagesystem 200. As in the example of FIG. 2, the data storage system 200stores the content resources 202, the metadata 204, the schema 208, andthe template modules 206.

In addition, the data storage system 200 stores generic template files800A through 800N (collectively, “generic template files 800”). Each ofthe generic template files 800 corresponds to a different one of thetemplate modules 206. Each of the generic template files 800 stores thegeneric presentation string for the corresponding template module. Forexample, the generic template file 800A can store the genericpresentation string for the template module 206A and the generictemplate file 800N can store the generic presentation string for thetemplate module 206N.

In some embodiments, the generic template files 800 have file nameextensions that correspond to formats of the generic presentationstrings in the files. For example, if the generic presentation stringsin the generic template files 800 are formatted as HTML data, thegeneric template files 800 can have the file name extensions “.html” or“.htm”.

As illustrated in the example of FIG. 8, the server system 102 providesthe web server 210. In addition, the server system 102 provides aconversion system 802. The server system 102 can provide the conversionsystem 802 by reading computer-executable instructions from one or morecomputer readable media and executing the computer-executableinstructions. As described in detail elsewhere in this document, theconversion system 802 uses the generic presentation strings in thegeneric template files 800 to generate the template modules 206.

FIG. 9 is a block diagram illustrating an example unfilled template 900.For ease of explanation, this document describes FIG. 9 with referenceto the generic template file 800A and the template module 206A. Readerswill understand that the description of FIG. 9 may be applicable toother ones of the generic template files 800 and template modules 206.

The editor application 706 can generate the unfilled template 900 byrendering a generic presentation string in the generic template file800A. In the example of FIG. 9, the unfilled template 900 comprisesslots 902A-902C (collectively, “slots 902”). In filled templatescorresponding to the unfilled template 900, the slots 902 are replacedby data based on objects in a dataset. The generic presentation stringdefines sizes and positions of the slots 902 in the unfilled template900.

When the editor application 706 displays the unfilled template 900, theadmin 704 can use surrounding static literal presentation string contentto define the position and size of the slots 902 within the unfilledtemplate 900. Furthermore, the admin 704 can add fields to or removefields from the unfilled template 900 or add other static literalpresentation string content or template module execution logic.

Each of the slots 902 is associated with a different object of the giventype and level. For example, a content resource object belonging to thegiven type can include content resource objects such as “title”,“type_image”, “snippet,” and “URL” each of which has a particularcontent resource object type. In this example, the admin 704 caninteract with the editor application 706 to associate the slot 902A withthe “type_image” content resource object, the slot 902B with the “title”content resource object, and slot 902C with the “snippet” contentresource object.

After the admin 704 associates the slots 902 with child object types,the admin 704 can configure the slots 902. For example, the admin 704can configure the slot 902C such that text in the slot 902C has aparticular style, such as italic. In another example, the given contentresource object type can include a child object belonging to a “URL”content resource object type. In this example, the admin 704 can use oneor more graphical user interfaces to configure the slot 902A such thattext within the slot 902A is a hyperlink to a URL specified by the childobject belonging to the “URL” content resource object type.

Furthermore, the admin 704 can add fixed text 904 or other staticfeatures to the unfilled template 900. In the example of FIG. 9, theadmin 704 has added the fixed text “Presentation Document” to theunfilled template 900. Consequently, when the client application 110presents filled templates based on the template module 206A, the text“Presentation Document” appears as an on-screen object in the filledtemplates.

When the admin 704 edits the unfilled template 900, the editorapplication 706 updates the generic presentation string of the giventemplate module to reflect the changes to the unfilled template 900. Forexample, the generic presentation string can include <div> tags for eachof the slots 902. In this example, id attributes of the <div> tagsindicate the child object types associated with the slots 902. In thisexample, when the admin 704 changes child object types associated withthe slots 902, the editor application 706 change the values of the idattributes of the <div> tags to reflect the new child object types.

FIG. 10 is a flowchart illustrating an example operation 1000 of theserver system 102. The example of FIG. 10 is explained with reference tothe template module 206A and the generic template file 800A. Readerswill understand that the server system 102 can perform similaroperations with regard to other ones of the template modules 206 andother ones of the generic template files 800.

After the operation 1000 begins, the server system 102 stores thetemplate module 206A and the generic template file 800A in the datastorage system 200 (1002). In various embodiments, the server system 102performs various actions to store the template module 206A and thegeneric template file 800A in the data storage system 200. For example,some embodiments of the server system 102 receive the template module206A without receiving the generic template file 800A. In this example,the server system 102 can generate the generic template file 800A fromthe template module 206A and store both the template module 206A and thegeneric template file 800A to the data storage system 200. In anotherexample, some embodiments of the server system 102 receive the generictemplate file 800A without receiving the template module 206A. In thisexample, the conversion system 802 can generate the template module 206Afrom the generic template file 800A and store both the template module206A and the generic template file 800A to the data storage system 200.

Next, the web server 210 receives a generic template request from theeditor application 706 (1004). The generic template request comprises arequest to retrieve the generic template file 800A. In response to thegeneric template request, the web server 210 sends the generic templatefile 800A to the editor application 706 (1006). After the editorapplication 706 receives the generic template file 800A, the editorapplication 706 can update the generic presentation string in thegeneric template file 800A, thereby creating an updated version of thegeneric template file 800A.

The updated version of the generic presentation string can differ fromthe earlier version of the presentation string in various ways. Forexample, the updated version of the generic presentation string can berenderable to present an updated version of the unfilled template. Inthis example, the slots of the updated version of the unfilled templatemay be different that the slots of the earlier version of the unfilledtemplate. In another example, the updated version of the unfilledtemplate may include different text or images than the earlier versionof the unfilled template.

Subsequently, the web server 210 receives a save request from the editorapplication (1008). Upon receiving the save request, the web server 210uses data in the save request to store the updated version of thegeneric template file 800A in the data storage system 200 (1010). Invarious embodiments, the save request comprises various data. Forexample, in some embodiments, the save request comprises a copy of theupdated version of the generic template file 800A. In this example, theweb server 210 copies the updated version of the generic template file800A to the data storage system 200. In another example, the saverequest comprises data that indicate differences between the initialversion of the generic template file 800A and the updated version of thegeneric template file 800A. In this example, the web server 210 uses thedifferences to recreate the updated version of the generic template file800A. In this example, the web server 210 then stores the recreatedupdated version of the generic template file 800A in the data storagesystem 200.

After receiving the save request, the conversion system 802 uses theedited version of the generic template file 800A to generate an updatedversion of the template module 206A (1012). In some instances, the webserver 210 replaces an earlier version of the template module 206A inthe data storage system 200 with the updated version of the templatemodule 206A.

Various embodiments of the conversion system 802 generate the updatedversion of the template module 206A in various ways. FIG. 11, describedin detail below, illustrates one example way that the conversion system802 can generate the updated version of the template module 206A.Readers will understand that the conversion system 802 can perform otheroperations to generate the updated version of the template module 206A.

At some time after the conversion system 802 generates the updatedversion of the template module 206A, the web server 210 receives atemplate request from the client application 110 (1014). The templaterequest comprises a request for the template module 206A. In response toreceiving the template request, the web server 210 sends the updatedversion of the template module 206A to the client application (1016).The client application 110 can then use the updated version of thetemplate module 206A to generate presentation strings renderable topresent filled templates. Slots in the unfilled template are replaced bydata in the filled templates.

In an alternate embodiment, the editor application 706 converts theupdated version of the generic template file 800A to a template module.In this example, the save request can comprise the template module.

FIG. 11 is a flowchart illustrating an example transformation operation1100 to generate a template module from a generic presentation string.After the operation 1100 starts, the conversion system 802 parses thegeneric presentation string to find different kinds of logical sections.In one embodiment these sections are delimited by several string tokensthat are recognized by the conversion system 802. Different kinds oflogical sections that might be recognized include, but are not limitedto conditional logic, looping logic, variable declarations, data bindingexpressions, rendering expressions, other metadata or information aboutthe template module logic and literal presentation content (1102).

In this example, the logical sections belong to a plurality of types.For example, sections associated with variable declaration, conditionallogic choices or data structure looping can be treated as one type,sections associated with data binding or data rendering expressions canbe treated as another type, and literal content sections can be treatedas yet another type. Each section type is associated with a differentoutput operation. The output operations generate output strings based oncontent of the section.

After the conversion system 802 generates the logical sections, theconversion system 802 invokes the transformation and output operation ofthe each of the sections (1104).

The logical section content strings can be static strings or scriptstrings. Static strings do not include instructions evaluated during theexecution of the template module 206A. For example, “<table>” can be astatic string. Script strings are evaluated during the executionoperation of the template module 206A.

After transforming the logical sections, the conversion system 802generates the output strings (1106). The conversion system 802 writesthe logical section output strings to the template module 206A (1108).When the template execution operation of the template module 206A isinvoked, the template module 206A generates a presentation string byevaluating the script strings in the logical sections associated withvariable declaration, conditional choices and looping to control thetemplate execution logic and the sections associated with data bindingand rendering are executed to retrieve the data elements from thecontent resources and combine them with the static literal contentstring sections. The template module 206A then combines the resultingstrings into the filled template presentation string. For example, thefollowing may be a portion of a databinding and rendering expressionsection:

‘<H2> Title:’+$urlHtmlEncode(ctx.CurrentItem[“Title”])+‘</H2>’In this example, the template module 206A can evaluate the databindingand rendering expression and find the “Title” content resource object ofthe current context object and generate the presentation string bycombining its value with the literal presentation content strings. Theclient application 110 can render this string to show an H2 elementcontaining the text “Title: Sales Figures 2009” as header contentrecognized as level 2.

FIG. 12 is a flowchart illustrating an example operation 1150 of theeditor application 706. The example of FIG. 12 is explained withreference to the template module 206A and the generic template file800A. Readers will understand that the server system 102 can performsimilar operations with regard to other ones of the template modules 206and other ones of the generic template files 800.

After the operation 1150 starts, the editor application 706 starts(1152). In various embodiments, the editor application 706 starts inresponse to various events. For example, in some embodiments, the editorapplication 706 starts in response to input from the admin 708.

After the editor application 706 starts, the editor application 706sends a generic template request to the web server 210 (1154). Thepresentation data request comprises a request for the generic templatefile 800A. After sending the generic template request to the web server210, the editor application 706 receives the generic template file 800Afrom the server system 102 (1156).

In various embodiments, the generic template request conforms to variouscommunication protocols. For example, in some embodiments, the generictemplate request conforms to the WebDAV protocol. In another example,the generic template request conforms to the File Transfer Protocol, theHTTP protocol, or another communication protocol.

After receiving the generic template file 800A, the editor application706 renders the generic presentation string in the generic template file800A to present an unfilled template (1158). During the time that theeditor application 706 displays the unfilled template, the editorapplication 706 receives input from the admin 704 to edit the unfilledtemplate (1160). For example, the editor application 706 can receiveinput to add, remove, reposition, or resize slots in the unfilledtemplate. In another example, the editor application 706 can receiveinput to add static text, images, tables, or formatting to the unfilledtemplate.

Subsequently, the editor application 706 receives save input from theadmin 704 (1162). In response to receiving the save input, the editorapplication 706 sends a save request to the web server 210 (1164). Asdescribed above, one or more systems within the server system 102 willprocess the data in the save request to store the updated version of thegeneric template file 800A in the data storage system 200.

FIG. 13 is a screen illustration showing a browser window 1200containing an example search interface 1202 presented by the clientdevice 104. The user 108 uses one or more search interfaces such as thesearch interface 1202 to search for resources in the website 112. Thesearch interfaces enable the user 108 to enter search strings and submitsearch requests. The search requests comprise requests for lists ofresources in the website 112 that satisfy the search strings. Afterreceiving and accepting a search request, the server system 102 providesa dataset to the client device 104. The dataset includes data regardingthe resources that satisfy the search string of the search request.

As illustrated in the example of FIG. 13, the search interface 1202includes a textbox 1204 into which the user 108 can enter a searchstring. The search interface 1202 also includes a submit button 1206.The user 108 can select the submit button 1206 to provide a searchrequest to the server system 102. The search request specifies thesearch string entered in the textbox 1204. As illustrated in the exampleof FIG. 13, the search interface 1202 can also include other features1208, such as a title, text, images, and so on. Furthermore, asillustrated in the example of FIG. 13, presentation of the searchfeatures (i.e., the textbox 1204 and the submit button 1206) of thesearch interface 1202 may not be the primary purpose of the searchinterface 1202. Alternatively, a search request can be preconfigured andstored in the system instead of being directly submitted by the user108.

FIG. 14 is a block diagram illustrating example components of analternate embodiment of the server system 102. As illustrated in theexample of FIG. 14, the server system 102 comprises the data storagesystem 200 and the web server 210. Although not illustrated in theexample of FIG. 14 for the sake of clarity, the data storage system 200can store the content resources 202, the metadata 204, the templatemodules 206, the schema 208, the generic template files 800, and otherdata. Furthermore, the server system 102 can provide the conversionsystem 802.

In addition to the data storage system 200 and the web server 210, theserver system 102 provides a search system 1300. The web server 210 andthe search system 1300 can be provided by the same or differentcomputing devices within the server system 102. The server system 102can provide the search system 1300 by executing instructions stored onone or more computer storage media.

The search system 1300 accesses a data storage system 1302. The datastorage system 1302 comprises one or more computer storage media. Insome embodiments, the computer storage media in the data storage system1302 are geographically dispersed. In other embodiments, the computerstorage media in the data storage system 1302 are located within asingle device or data center. Furthermore, in some embodiments, the datastorage system 1302 is part of the data storage system 200, or viceversa.

The data storage system 1302 stores a content index 1304, an admindatabase 1306, and a result type cache 1308. The content index 1304comprises data structures for storing a set of entries. Each of theentries in the content index 1304 stores properties of different ones ofthe content resources 202. The admin database 1306 comprises datastructures that store information regarding result types.

FIG. 15 illustrates example contents of the content index 1304 andexample contents of the admin database 1306. As illustrated in theexample of FIG. 15, the content index 1304 comprises a table having rows1400A-C (collectively, “rows 1400”) and columns 1402A-G (collectively,“columns 1402”). The rows 1400 and the columns 1402 define an array ofcells. The cells in each of the rows 1400 correspond to a differententry in the content index 1304. The rows 1400 include entries for thecontent resources 202. For example, the row 1400A corresponds to aparticular resource and the row 1400B corresponds to another resource.It will be appreciated that the content index 1304 can include more orfewer than three entries. The ellipses in the example of FIG. 15indicate that the content index 1304 can include additional rows.Alternatively, the content index may store the data and resources in aformat that does not correspond to a table, and will return collectionsof content resources 202 by accessing that data store to return contentresource objects.

Each of the columns 1402 corresponds to a different property. In theexample of FIG. 15, the columns 1402A-G correspond to an “identifier”property, a “name” property, a “storage location” property, a “datecreated” property, a “date modified” property, and a “snippet” property,and an “author” property, respectively. Other embodiments of the contentindex 1304 include columns for more, fewer, or different properties.

As illustrated in the example of FIG. 15, the admin database 1306includes a table having rows 1404A-C (collectively, “rows 1404”) andcolumns 1406A-G (collectively, “columns 1406”). The rows 1404 and thecolumns 1406 define an array of cells. The cells in each of the rows1404 correspond to a different result type. For example, the row 1404Acorresponds to one result type and the row 1404B corresponds to adifferent result type. Each of the columns 1406 corresponds to differentdata element properties of the result types. In the example of FIG. 15,the columns 1406A-F correspond to an “identifier” property, a “name”property, a “description” property, a “rule” property, a “templatemodule” property, a “priority” property, and an “applicable properties”property, respectively. The values for the “rule” property in column1406D specify rules that define which resources belong to a result type.The values for the “template module” property in column 1406E identifyone of the template modules 206 corresponding to the result types. Otherembodiments of the admin database 1306 include columns for more, fewer,or different properties.

Continuing reference is now made again to the example of FIG. 14. Inaddition to the data storage system 1302, the search system 1300provides a type management module 1310 and a search module 1312. Thesearch system 1300 can provide the type management module 1310 and thesearch module 1312 by reading computer-executable instructions from oneor more computer-readable media and executing the computer-executableinstructions. The type management module 1310 creates, edits, anddeletes at least some of the result type entries in the admin database1306 in response to the administrative input from the admin 704. Forexample, the type management module 1310 can, in response to receivingthe administrative input from the admin 704, change a rule of a resulttype or change which of the template modules 206 corresponds to a resulttype. By causing the type management module 1310 to create, edit, ordelete result type entries in the admin database 1306, the admin 704 canconfigure search result interfaces in the website 112 to displayinformation about different types of search results in different ways.

The search module 1312 receives the search requests from the user 108.The user 108 can submit the search requests using search interfaces,such as the search interface 1202. Upon receiving from the client device104 a search request for resources in the website 112 that satisfy asearch string, the search module 1312 accesses entries in the admindatabase 1306 to retrieve the rule properties of the result types. Someembodiments use the result type cache 1308 to accelerate retrieval ofthe properties of the result types from the admin database 1306. Uponreceiving the rules of the result types, the search module 1312 uses thecontent index 1304 to identify ones of the content resources 202 in thewebsite 112 that satisfy conditions specified by the search string. Thesearch module 1312 retrieves, for each of the result types, theproperties of the identified resources needed to evaluate the rules ofthe result types.

The search module 1312 evaluates the rules of the result types againstthe retrieved properties of the identified resources to determine resulttypes of the identified resources. The search module 1312 can usevarious algorithms to evaluate the rules. For example, the search module1312 can be implemented as a forward-chaining rules engine.

After determining that a given resource belongs to a given result type,the search module 1312 generates a content resource object belonging toa type that corresponds to the given result type's template module. Thegiven resource's content resource object includes each applicable dataelement property of the given resource. The given resource's applicableproperties are the properties of the identified resource that areapplicable to the identified resource's result type. For example, if the“applicable properties” property 1406G of identified resource's resulttype designates the “snippet” property 1402F, the identified resource'sdata element includes the identified resource's “snippet” property.

After generating data elements for each of the identified resources, thesearch module 1312 sends a dataset to the client device 104. The datasetincludes the rows and their data element for the identified resources.In some embodiments the received data can include schema and templatemodules data in the same package with the dataset, in other embodimentsthe schema and template modules may be cached in the client applicationor retrieved in a separate step. When the client device 104 receives thedataset, the client application 110 processes the dataset in the mannerdescribed above.

FIG. 16 illustrates an example scope hierarchy 1500. In someembodiments, the server system 102 hosts multiple distinct websites. Theserver system 102 can host these websites on behalf of a singleorganization. Alternately, a service provider entity can operate theserver system 102 and the server system 102 can host these websites onbehalf of multiple tenants. Tenants include organizations, such ascompanies, or individuals that arrange with a service provider entity ofthe server system 102 for the provider to host websites for the tenants.From the point of view of a tenant, the server system 102 only hosts thetenant's websites and not the websites of other tenants. In someinstances, the server system 102 can host multiple websites for a singleone of the tenants. In such instances, the tenant can group two or moreof its websites into site groups. The tenant can authorize the admin 704to perform administration tasks on one or more of the tenant's websites,such as the website 112.

As illustrated in the example of FIG. 16, a tenant 1502 has two sitegroups 1504A and 1504B (collectively, “site groups 1504”). The sitegroup 1504A includes websites 1506A and 1506B. The site group 1504Bincludes websites 1506C, 1506D, and 1506E. This document can refer tothe websites 1506A, 1506B, 1506C, 1506D, and 1506E collectively as“websites 1506.” The website 112 can be one of the websites 1506.

The server system 102 can provide multiple admin interfaces. Each of theadmin interfaces has a different scope. For example, a first admininterface can have a tenant-wide scope, a second admin interface canhave a site group-wide scope, a third admin interface can have awebsite-wide scope, and so on. In the example of FIG. 16, the serversystem 102 can provide an admin interface for the tenant 1502, an admininterface for the site group 1504A, an admin interface for the sitegroup 1504B, and separate admin interfaces for each of the websites1506. The admin interface for the tenant 1502 enables the admin 704 toconfigure settings that are generally applicable to the tenant 1502. Theadmin interfaces for the site groups 1504 enable the admin 704 toindependently configure the site groups 1504. The admin interfaces forthe websites 1506 enable the admin 704 to independently configure thewebsites 1506.

The admin interfaces include type configuration interfaces. Each typeconfiguration interface is a user interface, such as a GUI, thatincludes features that enable the admin 704 to configure (e.g., createor modify) result types applicable within the type configurationinterface's scope. The type configuration interface's scope is the sameas the scope of the admin interface that includes the type configurationinterface. For example, the admin 704 can use the type configurationinterface within the admin interface for the website 1506A to configureresult types applicable to the website 1506A. When the admin 704 uses atype configuration interface within the admin interface for one of thesite groups 1504, the given result type is applicable to each website inthe site group. For example, the admin 704 can use the typeconfiguration interface within the admin interface for the site group1504B to configure result types applicable to websites in the site group1504B, but not result types applicable to websites in the site group1504A.

FIG. 17 is a flowchart illustrating an example operation 1600 toconfigure a result type. In the operation 1600, the type managementmodule 1310 receives template configuration input from the admin device702 (1602). The template configuration input specifies information abouta new or existing template module. The type management module 1310updates the template modules 206 in response to the templateconfiguration input (1604). For instance, the type management module1310 can store a new template module in the data storage system 200 ormodify an existing one of the template modules 206 in the data storagesystem 200.

In various embodiments, the type management module 1310 receives thetemplate configuration input in various ways. For example, in someembodiments, the type management module 1310 receives the templateconfiguration input from a separate application, such as a web designsuite or an integrated development environment. In other embodiments,the type management module 1310 provides data representing a templateconfiguration interface to the admin device 702. For example, the typemanagement module 1310 can provide HTML data, CSS data, scripting data,and or other types of data that the admin device 702 can render orinterpret to present the template configuration interface to the admin704. The template configuration interface includes features that enablethe admin 704 to create a new template module or edit an existing one ofthe template modules 206.

Furthermore, in the operation 1600, the type management module 1310provides admin interface data to the admin device 702 (1606). The admininterface data represents a type configuration interface within an admininterface. For instance, the admin interface data can represent a typeconfiguration interface within an admin interface for the tenant 1502,admin interfaces for the site groups 1504, or admin interfaces for thewebsites 1506.

The type configuration interface is a user interface that enables theadmin 704 to configure a given result type. In various embodiments, thetype configuration interface comprises various types of user interfaces.For example, the type configuration interface can comprise a GUI thatincludes features, such as data entry features, that enable the admin704 to configure (e.g., create or modify) a given result type. Inanother example, the type configuration interface can be a command lineinterface, such as a POWERSHELL™ interface.

In various embodiments, the admin interface data can include varioustypes of data. For example, the admin interface data can includeHypertext Markup Language (HTML) data, Cascading Style Sheet (CSS) data,scripting data, and other types of data. In this example, a web browserapplication or another application operating on the admin device 702renders or processes the admin interface data to present the typeconfiguration interface.

FIG. 18 is a screen illustration of a browser window 1700 containing anexample type configuration interface 1702. The type management module1310 can provide the admin interface data representing the typeconfiguration interface 1702 to the admin device 702. A browserapplication running on the admin device 702 renders the admin interfacedata to display the type configuration interface 1702. This documentdescribes features of the example type configuration interface 1702 inrelation to steps in the operation 1600.

Continuing reference is now made again to the example of FIG. 17. Afterproviding the admin interface data to the admin device 702, the typemanagement module 1310 receives name input, description input, andpriority input from the admin 704 (1608). The name input specifies adisplay name for the given result type. For example, the name input canspecify “Technical Specification Type” or “Sideshow Type” as displaynames for the given result type. The description input specifies atextual description of the given result type. For example, thedescription input can specify “The Technical Specification Type is usedin search result pages to display information about technicalspecification documents.” The priority input specifies a priority forthe given result type. For example, the admin 704 can assign a priorityof “10” to the given result type and assign a priority of “4” to anotherresult type. The search module 1312 can use the priorities of the resulttypes to select a result type for a resource from among multiple resulttypes applicable to the resource.

In various embodiments, the type management module 1310 receives thename input, the description input, and the priority input in variousways. For example, the type configuration interface 1702 of FIG. 18includes a display name feature 1704, a description feature 1705, and apriority feature 1710. The admin 704 is able to enter a display name forthe given result type in the display name feature 1704. The admin 704 isable to enter a description of the given result type in the descriptionfeature 1705. The admin 704 is able to use the priority feature 1710 toselect a priority level. In addition, the type configuration interface1702 includes a save control 1706. When the admin 704 selects the savecontrol 1706, the admin device 702 provides data entered in the controlsof the type configuration interface 1702 to the type management module1310. In this way, the type management module 1310 receives name inputspecifying the display name entered by the admin 704 in the display namefeature 1704, description input specifying the description entered bythe admin 704 in the description feature 1705, and priority inputspecifying the priority level selected by the admin 704 in the priorityfeature 1710. In some instances, this document refers to data entered ina data entry control as data corresponding to the data entry control.

Reference is made again to the example of FIG. 17. Furthermore, the typemanagement module 1310 receives rule input from the admin 704 (1610).The rule input specifies a rule containing one or more conditions thatresources must satisfy in order to be considered to belong to the givenresult type. In various embodiments, the type management module 1310receives the rule input in various ways.

For example, the type configuration interface 1702 of FIG. 18 includes arule feature 1708. The admin 704 can enter a rule for the given resulttype in the rule feature 1708. For example, the admin 704 can make thegiven result type applicable to resources having a given file nameextension by entering the given file name extension in the rule feature1708. In this example, the admin 704 can enter the file name extensions“.docx” and “.doc” in the rule feature 1708 to make resources havingfile name extensions “.docx” or “.doc” belong to the given result type.

In another example, the admin 704 can enter one or more URL patterns inthe rule feature 1708. For example, the admin 704 can enter the URLpattern “/docs/spec_*” in the rule feature 1708. In this example,resources having URLs that start with the sub-string “/docs/spec_” canbelong to the given result type. Use of URL patterns as conditions in arule for a result type can be helpful when an entity uses particulardirectories or file naming conventions to distinguish different types ofresources. For example, the entity can use a file naming convention thatrequires all technical specification documents to begin with the string“spec” and requires all invention records to begin with the string“invent.” In this example, the admin 704 can take advantage of this filenaming convention to associate technical specification documents andinvention records with different result types. This is one example waythat resources having the same file format can belong to differentresult types. For instance, a first resource and a second resource canboth be word processor documents, slide presentation documents,webpages, PDF documents, spreadsheet documents, images, audio files,video files, or other types of documents having the same file format,but belong to different result types.

In other examples, the admin 704 can specify rules having conditionsbased on other types of conditions and combinations of conditions. Forexample, the admin 704 can specify a rule having conditions based oncreation times, edit times, titles, or other properties of the contentresources 202.

When the admin 704 selects the save control 1706, the admin device 702provides the information entered into the rule feature 1708 to the typemanagement module 1310. In this way, the type management module 1310receives rule input specifying the rule entered by the admin 704 in therule feature 1708.

Continuing reference is now made again to FIG. 17. Furthermore, the typemanagement module 1310 receives template selection input from the admin704 (1612). The template selection input associates the given resulttype with one of the template modules 206 stored in the data storagesystem 200. In some instances, the template selection input can indicatethe template module that the admin 704 created or edited in step 1602.

In various embodiments, the type management module 1310 receives thetemplate selection input in various ways. For example, the typeconfiguration interface 1702 of FIG. 18 includes a template selectioncontrol 1712. The admin 704 is able to enter a URL or other identifierof a template module in the template selection control 1712. In theexample of FIG. 18, the template selection control 1712 is a text box.However, in other embodiments, the template selection control 1712 is adrop box. In such embodiments, the template selection control 1712displays a list of names of the template modules 206. The admin 704 canthen select one of the template modules from among the list of names ofthe template modules 206 in the template selection control 1712. Whenthe admin 704 selects the save control 1706, the admin device 702provides template selection input to the type management module 1310.The template selection input indicates the template module selected inthe template selection control 1712 by the admin 704.

Reference is now made again to the example of FIG. 17. The typemanagement module 1310 receives property selection input from the admin704 (1614). The property selection input indicates the applicableproperties of the given result type.

In various embodiments, the type management module 1310 receivesproperty selection input from the admin 704 in various ways. Forexample, the type configuration interface 1702 of FIG. 18 includes anavailable properties field 1714 and an applicable properties field 1716.The available properties field 1714 contains a list of properties ofresources. The applicable properties field 1716 contains a list of theapplicable properties of the given result type. The admin 704 can makeone of properties listed in the available properties field 1714 into anapplicable property of the given result type by moving the property fromthe available properties field 1714 to the applicable properties field1716.

When the admin 704 selects the save control 1706, the admin device 702provides the list of properties in the applicable properties field 1716to the type management module 1310. In this way, the type managementmodule 1310 receives property selection input specifying the applicableproperties of the given result type.

Subsequently, the type management module 1310 stores in the admindatabase 1306 a new or updated entry for the given result type (1616).The entry for the given result type includes a set of properties. Theseproperties include a name property that specifies the type nameindicated by the name input, a description property that specifies thedescription specified by the description input, a priority property thatspecifies the priority level specified by the priority input, a ruleproperty that specifies a rule indicated by the rule input, a templateproperty that specifies the template module indicated by the templateselection input, and an applicable properties property that specifiesthe properties indicated by the property selection input.

It should be appreciated that the server system 102 can perform some orall of the operation 1600 multiple times. As a result, the server system102 can provide admin interface data to the admin device 702 multipletimes and receive name input, rule input, priority selection input,template configuration input, and template selection input multipletimes for multiple different result types. Thus, by performing at leastsome of the operation 1600 multiple times, the admin 704 can provideadministrative input associating a first template module with a firstresult type and administrative input associating a second templatemodule with a second result type. Likewise, by performing at least someof the operation 1600 multiple times, the admin 704 can provideadministrative input to associate a given name, rule, template module,or priority with a first result type and then later provide additionaladministrative input to associate a different name, rule, templatemodule or priority with the first result type.

FIG. 19 is a flowchart illustrating an example operation 1800 to searchfor resources in a target website. In the operation 1800, the searchmodule 1312 receives a search request from the user 108 (1802). Thesearch request requests a list of resources in the target website thatsatisfy a search string specified by the search request. For ease ofexplanation, this document assumes that the target website is thewebsite 112. In some embodiments, the search module 1312 receives thesearch request when the user 108 selects the submit button 1206 in thesearch interface 1202 (FIG. 12).

The search string in the search request specifies one or moreconditions. For example, the search request can comprise the followingsearch string: “Contoso.” In this example, resources associated with theword “Contoso” satisfy the search string. In another example, the searchrequest can comprise the following search string: “Contoso andcreated-before: Jul. 1, 2009.” In this example, resources that areassociated with the word “Contoso” and that were created before Jul. 1,2009 satisfy the conditions of the search string. In variousembodiments, the search module 1312 can accept search strings conformingto various query formats. For example, some embodiments of the searchmodule 1312 can accept search strings conforming to the Advanced QuerySyntax (AQS).

After receiving the search request, the search module 1312 retrievesresult types from the admin database 1306 (1804). The search module 1312identifies search results for the search request (1806). The searchresults for the search request are resources of the website 112 thatsatisfy conditions specified by the search string in the search request.For example, the search module 1312 can determine that a first resourceof the website 112 and a second resource of the website 112 satisfy theconditions specified by the search string. In this example, the firstresource and the second resource are search results for the searchrequest.

As discussed above, the server system 102 can host multiple websites.These websites can be associated with one or more tenants. In manyinstances, the search module 1312 does not identify or provideinformation about resources that satisfy the search string of the searchrequest but that are not in the target website for the search request(e.g., the website 112). If the search module 1312 were to providesearch results from websites other than the target website, the usercould become confused, private information could be revealed, or othernegative consequences could occur.

Various embodiments of the search module 1312 identify search resultsfor the search request in various ways. For example, the search module1312 can perform a linear scan of the content index 1304 to identify thesearch results. In another example, the search module 1312 can useanother index to identify the search results.

After the search module 1312 identifies the search results for thesearch request, the search module 1312 identifies result types for eachof the search results (1808). To identify a result type for a searchresult, the search module 1312 evaluates rules for result types. Theresult type entries in the admin database 1306 include properties thatspecify the rules for the result types. If the search result satisfies arule for a result type, the search result belongs to that result type.To determine whether a search result satisfies a rule for a result type,the search module 1312 may need to retrieve one or more properties ofthe search result from the content index 1304.

In some instances, a search result can belong to multiple result types.In other words, the search result can satisfy the conditions of rulesfor multiple result types. For example, search results can belong to afirst result type when the search results have the file name extension“.pptx.” Furthermore, in this example, search results can belong to asecond result type when the search results have URLs that include thestring “spec.” In this example, a particular search result can have thefile name extension “.pptx” and have also have a URL that includes thestring “spec.”

Because search results can belong to multiple result types, the searchmodule 1312 performs conflict resolution operations as needed to selectone result type for the search results from among the multipleapplicable result types (1810). In various embodiments, the searchmodule 1312 can perform various conflict resolution operations to selecta particular one of the result types for the search result. For example,the search module 1312 can perform a conflict resolution operation thatinvolves hierarchical collections of websites. As described above, theserver system 102 can host multiple websites 1506 for the tenant 1502.In this example, the tenant 1502 has grouped the websites 1506 into thesite groups 1504. Furthermore, in this example, result types associatedwith elements lower on the scope hierarchy 1500 take precedence in theconflict resolution operation over relatively higher elements in thescope hierarchy 1500. For instance, the admin 704 can specify that thescope of a first result type is the website 1506A and can specify thatthe scope of a second result type is the site group 1504A. In thisinstance, if a search result belongs to both the first result type andthe second result type, the conflict resolution operation chooses thefirst result type for the search result instead of the second resulttype because the first result type is associated with a lower element inthe scope hierarchy 1500.

In another example conflict resolution operation, the admin 704 canassign numerical priorities to result types. For instance, the admin 704can assign a priority of “10” to a first result type and a priority of“4” to a second result type. In this instance, a search result cansatisfy the rules for the first result type and the second result type.However, the conflict resolution operation assigns the first result typeto the search result and not the second result type because the firstresult type has a higher priority number than the second result type. Inyet another example conflict resolution operation, the search module1312 chooses the result type that was created earlier or listed earlierin the content index 1304.

After identifying the result types, the search module 1312 retrievesapplicable properties of the search results from the content index 1304(1812). The applicable properties of a search result are properties ofthe search result designated as the applicable properties of the searchresult's result type. For example, the search result's result type candesignate a “URL” property and a “Snippet” property as applicableproperties. In this example, the search module 1312 retrieves the valueof the “URL” property and the value of the “Snippet” property from thesearch result's entry in the content index 1304.

After the search module 1312 retrieves the applicable properties of thesearch result, the search module 1312 generates a dataset and sends thedataset to the client device 104 (1814). The dataset includes resultdata for at least some of the identified search results. The result datafor a search result includes the applicable properties of the searchresult.

After the search module 1312 provides the dataset to the client device104, the web server 210 receives requests from the client device 104 forthe template modules 206 that correspond to the types of contentresource objects in the dataset (1816). In response to the requests, theweb server 210 retrieves the template modules from the data storagesystem 200 and sends the template modules to the client device 104(1818). After the client device 104 receives the template modules, theclient application 110 performs the content generation script.Performance of the content generation script causes the templateexecution operations of the template modules to be performed on contentresource objects in the dataset, thus generating presentation stringsfor different ones of the identified resources. The client application110 renders the presentation strings for the search results to presentsets of on-screen features describing the identified resources.

In some embodiments, the search module 1312 provides the dataset to theclient device 104 at the same time as parts of a larger set of datarepresenting a search result web page. In other embodiments, the searchmodule 1312 sends the dataset to the client device 104 separate from awebpage that contains a listing of the search results. In some suchembodiments, the search module 1312 can provide the dataset to theclient device 104 using AJAX technology.

It will be appreciated that the server system 102 can perform theoperation 1800 multiple times. Consequently, the server system 102 canreceive multiple search requests for multiple webpages and can providedifferent datasets as a result of different search strings, changes toresult types, changes to template modules, and various other factors.

Reference is now made again to the example of FIG. 6. As discussedabove, the client application 110 can display the search resultsinterface 600 after the client application 110 sends a search request tothe server system 102 and the client application 110 receives data fromthe server system 102 representing the search results interface 600.

The search results interface 600 includes the filled template 604 andthe filled template 606. The filled template 604 corresponds to a firstsearch result and the filled template 606 corresponds to a second searchresult. In some instances, the user 108 can expose filled templates foradditional search results by scrolling the search results interface 600.Furthermore, in some instances, search results are paginated acrossmultiple webpages. In such instances, the user 108 can expose additionalfilled template modules by clicking on a link (not shown) to a nextwebpage or performing another action to expose the filled templatemodules for additional search results.

As illustrated in the example of FIG. 6, the search results interface600 presents different information for different types of searchresults. Presenting different information for different types of searchresults can be advantageous for several reasons. For example, it mightnot be useful to provide a snippet from a slide presentation documentbecause slide presentation documents might not include textrepresentative of the content of the slide presentation document. Incontrast, word processor documents are more likely to include text thatis representative of the content of the word processor documents. Inthis example, it may be more helpful to a user to see snippets of wordprocessor documents than slide presentation documents. Thus, the abilityof the admin 704 to configure the server system 102 to present differentinformation for different types of search results in a website mayenable users to get useful information in search result interfaces.Furthermore, because the admin 704 is able to configure and createresult types and to define which resources belong to particular resulttypes, the admin 704 may be able to configure the server system 102 topresent information about search results in ways that are unique to theadmin's organization.

Furthermore, the use of user interfaces, such as GUIs, to configure theserver system 102 may enable less-experienced admins to quickly andcheaply configure the server system 102 to present different informationfor different types of search results. For instance, the admin 704 doesnot need to understand or know how to edit XSLT code, JavaScript, HTML,CSS, C++, Perl, or other formal machine-interpretable code in order toconfigure the server system 102 to provide different information fordifferent types of search results. Rather, the above descriptionexplains how the admin 704 can use data entry controls in GUIs toconfigure the server system 102. Example data entry controls includetextboxes, drop boxes, check boxes, text area elements, radio buttons,text areas, buttons, other features of HTML forms, and other userinterface features that enable entry of data.

FIG. 20 is a block diagram illustrating an example computing device1900. In some embodiments, the server system 102, the client device 104,and the admin device 702 are implemented as one or more computingdevices like the computing device 1900. It should be appreciated that inother embodiments, the server system 102, the client device 104, and theadmin device 702 are implemented using computing devices having hardwarecomponents other than those illustrated in the example of FIG. 20.

As used herein, the term computer readable media may include computerstorage media and communication media. As used in this document, acomputer storage medium is a device or article of manufacture thatstores data and/or computer-executable instructions. A computer storagemedium does not consist of transitory signals. Computer storage mediamay include volatile and nonvolatile, removable and non-removabledevices or articles of manufacture implemented in any method ortechnology for storage of information, such as computer readableinstructions, data structures, program modules, or other data. By way ofexample, and not limitation, computer storage media may include dynamicrandom access memory (DRAM), double data rate synchronous dynamic randomaccess memory (DDR SDRAM), reduced latency DRAM, DDR2 SDRAM, DDR3 SDRAM,solid state memory, read-only memory (ROM), electrically-erasableprogrammable ROM, optical discs (e.g., CD-ROMs, DVDs, etc.), magneticdisks (e.g., hard disks, floppy disks, etc.), magnetic tapes, and othertypes of devices and/or articles of manufacture that store data.Communication media may be embodied by computer readable instructions,data structures, program modules, or other data in a modulated datasignal, such as a carrier wave or other transport mechanism, andincludes any information delivery media. The term “modulated datasignal” may describe a signal that has one or more characteristics setor changed in such a manner as to encode information in the signal. Byway of example, and not limitation, communication media may includewired media such as a wired network or direct-wired connection, andwireless media such as acoustic, radio frequency (RF), infrared, andother wireless media.

In the example of FIG. 20, the computing device 1900 comprises a memory1902, a processing system 1904, a secondary storage device 1906, anetwork interface card 1908, a video interface 1910, a display unit1912, an external component interface 1914, and a communications medium1916. The memory 1902 includes one or more computer storage mediacapable of storing data 1918 and/or computer-executable instructions1920.

The secondary storage device 1906 includes one or more computer storagemedia. The secondary storage device 1906 stores data 1922 andcomputer-executable instructions 1924 not directly accessible by theprocessing system 1904. In other words, the processing system 1904performs an I/O operation to retrieve data and/or software instructionsfrom the secondary storage device 1906.

The processing system 1904 includes one or more processing units. Aprocessing unit is a physical device or article of manufacturecomprising one or more integrated circuits that read data andinstructions from computer readable media, such as the memory 1902 andthe secondary storage device 1906, and selectively execute theinstructions. In various embodiments, the processing system 1904 isimplemented in various ways. For example, the processing system 1904 canbe implemented as one or more processing cores. In another example, theprocessing system 1904 can comprise one or more separatemicroprocessors. In yet another example embodiment, the processingsystem 1904 can comprise an application-specific integrated circuit(ASIC) that provides specific functionality. In yet another example, theprocessing system 1904 provides specific functionality by using an ASICand by executing computer-executable instructions.

The network interface card 1908 is a device or article of manufacturethat enables the computing device 1900 to send data to and receive datafrom a communication network. In different embodiments, the networkinterface card 1908 is implemented in different ways. For example, thenetwork interface card 1908 can be implemented as an Ethernet interface,a token-ring network interface, a fiber optic network interface, awireless network interface (e.g., Wi-Fi, WiMax, etc.), or another typeof network interface.

The video interface 1910 enables the computing device 1900 to outputvideo information to the display unit 1912. The display unit 1912 can bevarious types of devices for displaying video information, such as acathode-ray tube display, an LCD display panel, a plasma screen displaypanel, a touch-sensitive display panel, an LED screen, or a projector.The video interface 1910 can communicate with the display unit 1912 invarious ways, such as via a Universal Serial Bus (USB) connector, a VGAconnector, a digital visual interface (DVI) connector, an S-Videoconnector, a High-Definition Multimedia Interface (HDMI) interface, or aDisplayPort connector.

The external component interface 1914 enables the computing device 1900to communicate with external devices. For example, the externalcomponent interface 1914 can be a USB interface, a FireWire interface, aserial port interface, a parallel port interface, a PS/2 interface,and/or another type of interface that enables the computing device 1900to communicate with external devices. In various embodiments, theexternal component interface 1914 enables the computing device 1900 tocommunicate with various external components, such as external storagedevices, input devices, speakers, modems, media player docks, othercomputing devices, scanners, digital cameras, and fingerprint readers.

The communications medium 1916 facilitates communication among thehardware components of the computing device 1900. In the example of FIG.20, the communications medium 1916 facilitates communication among thememory 1902, the processing system 1904, the secondary storage device1906, the network interface card 1908, the video interface 1910, and theexternal component interface 1914. The communications medium 1916 can beimplemented in various ways. For example, the communications medium 1916can comprise a PCI bus, a PCI Express bus, an accelerated graphics port(AGP) bus, a serial Advanced Technology Attachment (ATA) interconnect, aparallel ATA interconnect, a Fiber Channel interconnect, a USB bus, aSmall Computing system Interface (SCSI) interface, or another type ofcommunications medium.

The memory 1902 stores various types of data and/or softwareinstructions. For instance, in the example of FIG. 12, thecomputer-executable instructions 1920 in the memory 1902 can includeBasic Input/Output System (BIOS) instructions 1926 and operating systeminstructions 1928. Execution of the BIOS instructions 1926 by theprocessing system 1904 causes the computing device 1900 to boot up.Execution of the operating system instructions 1928 causes the computingdevice 1900 to provide an operating system that coordinates theactivities and sharing of resources of the computing device 1900.Furthermore, the memory 1902 stores application software 1930. Executionof the application software 1930 by the processing system 1904 causesthe computing device 1900 to provide one or more applications. Thememory 1902 also stores data 1918. The data 1918 is data used byprograms that execute on the computing device 1900.

The various embodiments described above are provided by way ofillustration only and should not be construed as limiting. Those skilledin the art will readily recognize various modifications and changes thatmay be made without following the example embodiments and applicationsillustrated and described herein. For example, the operations shown inthe figures are merely examples. In various embodiments, similaroperations can include more or fewer steps than those shown in thefigures. Furthermore, in other embodiments, similar operations caninclude the steps of the operations shown in the figures in differentorders. Although the subject matter has been described in languagespecific to structural features and/or methodological acts, it is to beunderstood that the subject matter defined in the appended claims is notnecessarily limited to the specific features or acts described above.Rather, the specific features and acts described above are disclosed asexample forms of implementing the claims.

1. A method for enabling users to configure user interfaces, the methodcomprising: storing a first generic presentation string, the firstgeneric presentation string being renderable to present a first unfilledtemplate, the first unfilled template including one or more slots;generating, at a server system, a first template module from the firstgeneric presentation string, the first template module specifying afirst template execution operation, the first template executionoperation generating presentation strings for content resource objectsbelonging to a first content resource object type, the presentationstrings for the content resource objects belonging to the first contentresource object type being renderable to present filled templates,wherein, in the filled templates, data based on the content resourceobjects belonging to the first content resource object type replace theone or more slots in the first unfilled template; sending the firsttemplate module to a client application; sending a dataset to the clientapplication, the dataset including one or more collections of contentresource objects belonging to the first content resource object type;and sending a content generation script to the client application,performance of the content generation script causing the first templateexecution operation to be performed on the first content resourceobject.
 2. The method of claim 1, further comprising: receiving thefirst generic presentation string from a WYSIWYG editor application. 3.The method of claim 2, wherein the first template module is a currentversion of the first template module and the first generic presentationstring is a current version of the first generic presentation string;and wherein the method further comprises: sending an earlier version ofthe first generic presentation string to the WYSIWYG editor applicationprior to receiving the current version of the first generic presentationstring from the WYSIWYG editor application, the earlier version of thefirst generic presentation string defining an earlier version of thefirst unfilled template; and replacing an earlier version of the firsttemplate module with the current version of the first template moduleafter generating the current version of the first template module. 4.The method of claim 3, wherein the earlier version of the first genericpresentation string is renderable to produce an earlier version of thefirst unfilled template, the earlier version of the first unfilledtemplate having a different set of slots than the current version of thefirst unfilled template.
 5. The method of claim 2, wherein the firstgeneric presentation string conforms to a Hypertext Markup Language(HTML); and wherein the first template module specifies the firstconversion operation as a set of JavaScript instructions.
 6. The methodof claim 1, further comprising: receiving a request from the clientapplication for a user interface; and sending base resource data to theclient application in response the request, the base resource datacomprising the content generation script.
 7. The method of claim 6,further comprising: receiving a dataset request from the clientapplication after sending the base resource data to the clientapplication, the dataset request requesting the dataset; sending thedataset to the client application in response to the dataset request;receiving a template request from the client application after sendingthe dataset to the client application, the template request requestingthe first template module; and sending the first template module to theclient application in response to the template request.
 8. The method ofclaim 7, wherein the method further comprises: prior to receiving thetemplate request, sending a schema to the client application, the schemaspecifying allowable content resource object types in the dataset, theschema mapping at least some of the allowable content resource objecttypes to template modules, the schema mapping the first content resourcetype to the first template module; and wherein performance of thecontent generation script causes the first template module to beidentified, based on the schema mapping the first content resourceobject type to the first template module, as corresponding to the firstcontent resource object, performance of the content generation scriptfurther causing the first template module to be requested from theserver system.
 9. The method of claim 1, further comprising: storing, ata data storage system, the first generic presentation string in ageneric template file; and storing, at the data storage system, thefirst template module in a template module file.
 10. The method of claim9, wherein the first template module is a current version of the firsttemplate module; and wherein storing the template module file in thefirst template module comprises replacing an earlier version of thefirst template module with the current version of the first templatemodule.
 11. The method of claim 1, further comprising: storing a secondgeneric presentation string, the second generic presentation stringbeing renderable to present a second unfilled template, the secondunfilled template including one or more slots, the slots of the secondunfilled template being different than the slots of the first unfilledtemplate; storing a second template module, the second template modulespecifying a second template execution operation, the second templateexecution operation generating presentation strings for content resourceobjects belonging to a second content resource object type, wherein infilled templates based on the second template module, data based on thecontent resource objects belonging to the second content resource objecttype replace the slots of the second unfilled template; wherein thedataset includes a second content resource object, the second contentresource object belonging to the second content resource object type;and wherein performance of the content generation script causes thesecond template execution operation to be performed on the secondcontent resource object.
 12. The method of claim 10, wherein generatingthe first template module from the first generic presentation stringcomprises: parsing the first generic presentation string to locatelogical sections within the first generic presentation string; invokinga transformation and output operation for each of logical section, thetransformation and output operation generating an output string, theoutput operation generating the output string at least in part bytransforming the content of the logical sections in the genericpresentation string; writing the output string to the first templatemodule.
 13. The method of claim 1, wherein the first genericpresentation string defines sizes and positions of the slots in thefirst unfilled template, surrounding fixed text, and metadata andinformation about presentation and template module logic; wherein thefirst unfilled template includes fixed text; and wherein each of thefilled templates based on the first template module include the fixedtext and rendered data based on the template module logic.
 14. Acomputing device comprising: a processing system that readscomputer-executable instructions from one or more computer readablemedia and executes the computer-executable instructions, execution ofthe computer-executable instructions causing the computing device to:store a generic presentation string, the generic presentation stringconforming to a presentation language, the generic presentation stringbeing renderable to present an unfilled template, the unfilled templateincluding one or more slots; generate a template module from the genericpresentation string, the template module specifying a template executionoperation, the template execution operation generating presentationstrings for content resource objects belonging to a given contentresource object type, the presentation strings generated by the templateexecution operation conforming to the presentation language, thepresentation strings generated by the template execution operation beingrenderable to present filled templates, wherein the one or more slots inthe unfilled template are replaced in the filled templates with databased on the content resource objects belonging to the given contentresource object type; send base resource data to a client application inresponse to a resource request from the client application, the resourcerequest comprising a request for a user interface, the base resourcedata comprising a content generation script; and send a dataset to theclient application, the dataset including a given content resourceobject, the given cent resource object belonging to the given contentresource object type, performance of the content generation scriptcausing the template execution operation to be performed on the givencontent resource object.
 15. The computing device of claim 14, whereinthe computing device sends the dataset to the client application inresponse to the resource request.
 16. The computing device of claim 14,wherein execution of the computer-executable instructions by theprocessing system further causes the computing device to: send anearlier generic presentation string to an editor application in responseto a generic template request from the editor application, the generictemplate request requesting the generic presentation string, the earliergeneric presentation string being an earlier version of the genericpresentation string; receive a save request from the editor application;and store the current version of the generic presentation string to adata storage system in response to receiving the save request from theeditor application.
 17. The computing device of claim 16, wherein theeditor application is a WYSIWYG editor application capable of renderingthe generic presentation string to present the unfilled template and toedit the generic presentation string in response to edits to theunfilled template.
 18. The computing device of claim 16, wherein thegeneric presentation string is renderable to present a current unfilledtemplate and the earlier generic presentation string is renderable topresent an earlier unfilled template, the current unfilled templateincluding one or more slots not present in the earlier unfilledtemplate.
 19. The computing device of claim 16, wherein the genericpresentation string is renderable to present a current unfilled templateand the earlier generic presentation string is renderable to present anearlier unfilled template, the current unfilled template including textor an image not present in the earlier unfilled template.
 20. A computerstorage medium that stores computer-executable instructions, thecomputer storage medium not consisting of transitory signals, executionof the computer-executable instructions by a processing system of acomputing device causing the computing device to: send a first versionof a generic presentation string to an editor application in response toa request from the editor application for the generic presentationstring, the first version of the generic presentation string beingrenderable by the editor application to present a first unfilledtemplate, the first unfilled template including one or more slots;receive a save request from the editor application; store a secondversion of the generic presentation string to a data storage system inresponse to receiving the save request from the editor application, thesecond version of the generic presentation string being renderable topresent a second unfilled template, the second unfilled template beingdifferent than the first unfilled template; generate a template modulefrom the second version of the generic presentation string, the templatemodule specifying a template execution operation, the template executionoperation generating presentation strings for content resource objectsbelonging to a given content resource object type, the presentationstrings generated by the template execution operation being renderableto present filled templates, wherein the one or more slots in the secondunfilled template are replaced in the filled templates with data basedon the content resource objects belonging to the given content resourceobject type; send base resource data to a client application in responseto a resource request from the client application, the resource requestrequesting a user interface, the base resource data comprising a contentgeneration script; and send a dataset to the client application, thedataset including a given content resource object, the given contentresource object belonging to the given content resource object type,performance of the content generation script causing the templateexecution operation to be performed on the given content resourceobject, thereby generating a presentation string renderable by theclient application to present a filled template to a user of the clientapplication.